﻿using Little.Soldier.SWIFT;
using Little.Soldier.SWIFT.Definition;
using System.ComponentModel;

namespace Little.Soldier.SWIFT.Messages.Category0
{
  public class MT029 : SwiftMessage
  {
    private static SwiftMessageDefinition MessageDefinition;
    private static SwiftTagDefinition U0002;
    private static SwiftTagSubItemDefinition U0003;
    private static SwiftTagDefinition U0004;
    private static SwiftTagSubItemDefinition U0005;
    private static SwiftTagDefinition U0006;
    private static SwiftTagSubItemDefinition U0007;
    private static SwiftTagSubItemDefinition U0008;
    private static SwiftTagDefinition U000E;
    private static SwiftTagSubItemDefinition U000F;
    private static SwiftTagSubItemDefinition U0010;
    private static SwiftTagDefinition U0011;
    private static SwiftTagSubItemDefinition U0012;
    private static SwiftTagDefinition U0013;
    private static SwiftTagSubItemDefinition U0014;
    private static SwiftTagDefinition U0015;
    private static SwiftTagSubItemDefinition U0016;
    private static SwiftTagDefinition U0017;
    private static SwiftTagSubItemDefinition U0018;
    private static SwiftTagDefinition U0019;
    private static SwiftTagSubItemDefinition U001A;
    private static SwiftTagDefinition U001B;

    [Description("Sequential section number")]
    public Tag202 SectionNumber_202
    {
      get
      {
        return new Tag202((SwiftElement) this, 0, (SwiftDefinitionElement) MT029.U0002);
      }
    }

    [Description("Sequential section number")]
    public Tag202 Tag202_SectionNumber
    {
      get
      {
        return this.SectionNumber_202;
      }
    }

    [Description("Total number of sections in a multi-section message.")]
    public Tag203 TotalSections_203
    {
      get
      {
        return new Tag203((SwiftElement) this, 0, (SwiftDefinitionElement) MT029.U0004);
      }
    }

    [Description("Total number of sections in a multi-section message.")]
    public Tag203 Tag203_TotalSections
    {
      get
      {
        return this.TotalSections_203;
      }
    }

    [Description("Start date and time, local to the FIN Copy Server.")]
    public Tag177 StartDate_177
    {
      get
      {
        return new Tag177((SwiftElement) this, 0, (SwiftDefinitionElement) MT029.U0006);
      }
    }

    [Description("Start date and time, local to the FIN Copy Server.")]
    public Tag177 Tag177_StartDate
    {
      get
      {
        return this.StartDate_177;
      }
    }

    [Description("Cut-off or end date and time, local to the FIN Copy Server.")]
    public Tag177 EndDate_177
    {
      get
      {
        return new Tag177((SwiftElement) this, 0, (SwiftDefinitionElement) MT029.U000E);
      }
    }

    [Description("Cut-off or end date and time, local to the FIN Copy Server.")]
    public Tag177 Tag177_EndDate
    {
      get
      {
        return this.EndDate_177;
      }
    }

    [Description("FIN Copy Service Code.")]
    public Tag103 ServiceCode_103
    {
      get
      {
        return new Tag103((SwiftElement) this, 0, (SwiftDefinitionElement) MT029.U0011);
      }
    }

    [Description("FIN Copy Service Code.")]
    public Tag103 Tag103_ServiceCode
    {
      get
      {
        return this.ServiceCode_103;
      }
    }

    [Description("The number of status 1 urgent messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.")]
    public Tag343 CutOffTimeCountStatus1Urgent_343
    {
      get
      {
        return new Tag343((SwiftElement) this, 0, (SwiftDefinitionElement) MT029.U0013);
      }
    }

    [Description("The number of status 1 urgent messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.")]
    public Tag343 Tag343_CutOffTimeCountStatus1Urgent
    {
      get
      {
        return this.CutOffTimeCountStatus1Urgent_343;
      }
    }

    [Description("The number of status 2 urgent messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.")]
    public Tag343 CutOffTimeCountStatus2Urgent_343
    {
      get
      {
        return new Tag343((SwiftElement) this, 0, (SwiftDefinitionElement) MT029.U0015);
      }
    }

    [Description("The number of status 2 urgent messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.")]
    public Tag343 Tag343_CutOffTimeCountStatus2Urgent
    {
      get
      {
        return this.CutOffTimeCountStatus2Urgent_343;
      }
    }

    [Description("The number of status 1 normal messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.")]
    public Tag343 CutOffTimeCountStatus1Normal_343
    {
      get
      {
        return new Tag343((SwiftElement) this, 0, (SwiftDefinitionElement) MT029.U0017);
      }
    }

    [Description("The number of status 1 normal messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.")]
    public Tag343 Tag343_CutOffTimeCountStatus1Normal
    {
      get
      {
        return this.CutOffTimeCountStatus1Normal_343;
      }
    }

    [Description("The number of status 2 normal messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.")]
    public Tag343 CutOffTimeCountStatus2Normal_343
    {
      get
      {
        return new Tag343((SwiftElement) this, 0, (SwiftDefinitionElement) MT029.U0019);
      }
    }

    [Description("The number of status 2 normal messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.")]
    public Tag343 Tag343_CutOffTimeCountStatus2Normal
    {
      get
      {
        return this.CutOffTimeCountStatus2Normal_343;
      }
    }

    [Description("Message Input Reference of the message in the hold queue")]
    public Tag106 MessageInputReference_106
    {
      get
      {
        return new Tag106((SwiftElement) this, 0, (SwiftDefinitionElement) MT029.U001B);
      }
    }

    [Description("Message Input Reference of the message in the hold queue")]
    public Tag106 Tag106_MessageInputReference
    {
      get
      {
        return this.MessageInputReference_106;
      }
    }

    public MT029()
      : base(true)
    {
    }

    public MT029(SwiftMessage message)
      : base(message)
    {
    }

    internal override SwiftMessageDefinition MsgDefinition()
    {
      return MT029.MessageDefinition;
    }

    protected override void InitSwiftMessageDefinition()
    {
      MT029.MessageDefinition = new SwiftMessageDefinition("MT029", "FIN Copy Message Status Report");
      MT029.U0002 = new SwiftTagDefinition("SectionNumber_202", "Sequential section number");
      MT029.U0002.TagName = "{202:";
      MT029.U0003 = new SwiftTagSubItemDefinition("SectionNumber", "Sequential section number");
      MT029.U0002.Elements.Add((SwiftDefinitionElement) MT029.U0003);
      MT029.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT029.U0002);
      MT029.U0004 = new SwiftTagDefinition("TotalSections_203", "Total number of sections in a multi-section message.");
      MT029.U0004.TagName = "{203:";
      MT029.U0005 = new SwiftTagSubItemDefinition("TotalSections", "Total number of sections in a multi-section message.");
      MT029.U0004.Elements.Add((SwiftDefinitionElement) MT029.U0005);
      MT029.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT029.U0004);
      MT029.U0006 = new SwiftTagDefinition("StartDate_177", "Start date and time, local to the FIN Copy Server.");
      MT029.U0006.TagName = "{177:";
      MT029.U0006.Mandatory = false;
      MT029.U0007 = new SwiftTagSubItemDefinition("Date", "Date");
      MT029.U0006.Elements.Add((SwiftDefinitionElement) MT029.U0007);
      MT029.U0008 = new SwiftTagSubItemDefinition("Time", "Time");
      MT029.U0006.Elements.Add((SwiftDefinitionElement) MT029.U0008);
      MT029.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT029.U0006);
      MT029.U000E = new SwiftTagDefinition("EndDate_177", "Cut-off or end date and time, local to the FIN Copy Server.");
      MT029.U000E.TagName = "{177:";
      MT029.U000E.Mandatory = false;
      MT029.U000F = new SwiftTagSubItemDefinition("Date", "Date");
      MT029.U000E.Elements.Add((SwiftDefinitionElement) MT029.U000F);
      MT029.U0010 = new SwiftTagSubItemDefinition("Time", "Time");
      MT029.U000E.Elements.Add((SwiftDefinitionElement) MT029.U0010);
      MT029.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT029.U000E);
      MT029.U0011 = new SwiftTagDefinition("ServiceCode_103", "FIN Copy Service Code.");
      MT029.U0011.TagName = "{103:";
      MT029.U0011.Mandatory = false;
      MT029.U0012 = new SwiftTagSubItemDefinition("ServiceCode", "FIN Copy Service Code.");
      MT029.U0011.Elements.Add((SwiftDefinitionElement) MT029.U0012);
      MT029.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT029.U0011);
      MT029.U0013 = new SwiftTagDefinition("CutOffTimeCountStatus1Urgent_343", "The number of status 1 urgent messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.");
      MT029.U0013.TagName = "{343:";
      MT029.U0013.Mandatory = false;
      MT029.U0014 = new SwiftTagSubItemDefinition("CutOffTimeCount", "The number of status 1 urgent messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.");
      MT029.U0013.Elements.Add((SwiftDefinitionElement) MT029.U0014);
      MT029.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT029.U0013);
      MT029.U0015 = new SwiftTagDefinition("CutOffTimeCountStatus2Urgent_343", "The number of status 2 urgent messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.");
      MT029.U0015.TagName = "{343:";
      MT029.U0015.Mandatory = false;
      MT029.U0016 = new SwiftTagSubItemDefinition("CutOffTimeCount", "The number of status 2 urgent messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.");
      MT029.U0015.Elements.Add((SwiftDefinitionElement) MT029.U0016);
      MT029.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT029.U0015);
      MT029.U0017 = new SwiftTagDefinition("CutOffTimeCountStatus1Normal_343", "The number of status 1 normal messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.");
      MT029.U0017.TagName = "{343:";
      MT029.U0017.Mandatory = false;
      MT029.U0018 = new SwiftTagSubItemDefinition("CutOffTimeCount", "The number of status 1 normal messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.");
      MT029.U0017.Elements.Add((SwiftDefinitionElement) MT029.U0018);
      MT029.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT029.U0017);
      MT029.U0019 = new SwiftTagDefinition("CutOffTimeCountStatus2Normal_343", "The number of status 2 normal messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.");
      MT029.U0019.TagName = "{343:";
      MT029.U0019.Mandatory = false;
      MT029.U001A = new SwiftTagSubItemDefinition("CutOffTimeCount", "The number of status 2 normal messages with an ACK time later than the start time (if given) and earlier than the cut-off or end times.");
      MT029.U0019.Elements.Add((SwiftDefinitionElement) MT029.U001A);
      MT029.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT029.U0019);
      MT029.U001B = new SwiftTagDefinition("MessageInputReference_106", "Message Input Reference of the message in the hold queue");
      MT029.U001B.TagName = "{106:";
      MT029.U001B.Mandatory = false;
      MT029.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT029.U001B);
    }
  }
}
